1
Gourmand vs. Paresseux : Des Choix Stratégiques dans le Traitement des Collections
AI019Lesson 5
00:00

En Elixir, le traitement des données suit deux philosophies distinctes : Gourmand (Avid) et Paresseux. Comprendre ce compromis est essentiel pour l'efficacité mémoire et la stabilité du système.

1. Le Protocole Enumerable

Techniquement, les éléments pouvant être itérés sont dits implémenter le protocole Enumerable. Ce contrat commun permet à différentes structures de données de fonctionner avec le même ensemble de fonctions.

2. Modules Gourmands vs. Paresseux

Le Enum module est gourmand. Il peut potentiellement consommer tout le contenu d'une collection immédiatement, créant des listes intermédiaires à chaque étape du pipeline. En revanche, le Stream module est paresseux. La valeur suivante est calculée uniquement lorsqu'elle est nécessaire.

Enum (Gourmand)Charge entièrement le fichier de 10 Go→ Plantage (Mémoire épuisée)Stream (Paresseux)Lit ligne par ligne→ Sécurisé & Composable

3. Spécification vs. Résultat

Une valeur Stream est une spécification de ce que nous voulions, mais pas le résultat. Les streams sont énumérables et composables, vous permettant d'empiler des transformations sans exécuter de travail jusqu'à ce que vous transmettiez le stream à un « récepteur avide » comme Enum.to_list/1.

4. Pureté du Paradigme

Mélanger les paradigmes (fonctionnel et orienté objet) affaiblit les avantages apportés par une approche fonctionnelle. Privilégiez les transformations déclaratives aux boucles impératives pour plus de prévisibilité.

main.py
TERMINALbash — 80x24
> Ready. Click "Run" to execute.
>